Devices are becoming increasingly more powerful and smaller. In fact, many single devices now have multiple processors or multiple cores. Each processor or core capable, within a single device, of independently and concurrently processing instructions and data from that which is being processed by other processors or cores of that single device.
However, even if a single device is capable of processing multiple instructions concurrently on different processors or cores, if the software is not capable of being executed in parallel then this excess computing capacity is lost or grossly underutilized. Thus, software processes must be modified to take advantage of the newly developing computing capabilities.
Many software vendors have taken advantage of this situation by developing software that is multi-threaded. This means duplicate instances of a software module or service can concurrently and independently execute within a single device on multiple processors or cores. In some cases, the independent processing is coordinated by a software driver or manager to decompose a set of data for processing by multiple threaded software instances; the driver then assembles the results to present a single view of the processed data to a user.
One area that has not been addressed in any significant detail is that of directory services. In fact, most operating system or lower level user or application-support services have not been significantly enhanced to perform efficiently on multiple processors or cores within a single device.
In the case of directory services, search performance of a directory is a major criterion used to evaluate a particular directory vis-à-vis another directory. Search performance is mostly evaluated in terms of transactions per second using a multithreaded client. Though this technique is fine for directories with heavy load due to many clients executing the search at the same time; yet, most of the time the search operation is so fast that in real-world scenarios there is no need or desire on the part of the industry to process the searches in parallel or even detect the need for improvement. But, there are other situations that large enterprises regularly encounter where many searches and clients are involved and having parallel processing capability would prove useful. In fact, even with fast searches there is a lot of room for improvement that can be made for directory users.
Consequently, there is a need for improved techniques for directory search processing that utilizes multicore and multiprocessor architectures.